"""环境变量 PATH 移除工具

从用户级 PATH 环境变量中移除当前目录。

用法:
    python removepath.py

功能:
    - 获取当前工作目录
    - 检查目录是否在 PATH 中
    - 从 PATH 环境变量中移除目录
    - 自动处理路径分隔符

示例:
    > cd D:\your\tools
    > python removepath.py
    已从 PATH 环境变量中永久移除 D:\your\tools。

错误处理:
    - 目录不存在于 PATH 中
    - PATH 环境变量未找到
    - 权限不足

注意:
    - 修改的是用户级环境变量
    - 修改后可能需要重启命令行
    - 请确保要移除的目录确实不再需要
"""

import os
import winreg

def remove_from_path_permanently():
    # 获取当前目录
    current_dir = os.getcwd()
    try:
        # 打开系统环境变量的注册表项
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
                             r"Environment", 0,
                             winreg.KEY_ALL_ACCESS)
        try:
            # 获取当前的 PATH 环境变量值
            path_value, _ = winreg.QueryValueEx(key, "PATH")
            # 以系统路径分隔符分割 PATH 变量为路径列表
            path_list = path_value.split(os.pathsep)
            # 检查当前目录是否在 PATH 列表中
            if current_dir in path_list:
                # 如果存在，则移除该目录
                path_list.remove(current_dir)
                # 将更新后的路径列表重新组合成字符串
                new_path = os.pathsep.join(path_list)
                # 更新注册表中的 PATH 环境变量值
                winreg.SetValueEx(key, "PATH", 0, winreg.REG_EXPAND_SZ, new_path)
                print(f"已从 PATH 环境变量中永久移除 {current_dir}。")
            else:
                print(f"{current_dir} 不在 PATH 环境变量中。")
        except FileNotFoundError:
            print("PATH 环境变量未找到。")
    except PermissionError:
        print("权限不足，无法修改注册表。请以管理员身份运行此脚本。")
    finally:
        # 关闭注册表项
        if 'key' in locals():
            winreg.CloseKey(key)

if __name__ == "__main__":
    remove_from_path_permanently()